Python numpy 入門系列 22 合併ndarray 您所在的位置:网站首页 陈诚 火车南站到北站 Python numpy 入門系列 22 合併ndarray

Python numpy 入門系列 22 合併ndarray

#Python numpy 入門系列 22 合併ndarray| 来源: 网络整理| 查看: 265

 

 

 

ndarray的合併

定義要使用的數據源

 

a = np.array([1, 1, 1]) b = np.array([2, 2, 2]) print('a', a) print('b', b)

        a [1 1 1]    b [2 2 2]

numpy.vstack()函數

語法:vstack(tup),參數是一個元組,它可將元組中指定的數組進行合併

# 將a與b合併 c = np.vstack((a, b)) print('合併結果:\n', c) print('c的形狀:\n', c.shape)

    合併結果:     [[1 1 1]     [2 2 2]]    c的形狀:     (2, 3)

從結果來看,兩個一維數組合並後的結果是一個二維數組

 

numpy.hstack()函數

語法:hstack(tup),參數是一個元組與 vstack不同的是,vstack將數組進行縱向合併,而hstack將數組進行橫向合併vstack 是 vertical stack 的縮寫hstack 是 horizontal stack 的縮寫

# 將a與b合併 c = np.hstack((a, b)) print('合併結果:\n', c) print('c的形狀:\n', c.shape)

    合併結果:     [1 1 1 2 2 2]    c的形狀:     (6,)

可以看出,兩個一維數組對象橫向合併後,還是一個一維的序列,不過,元素的個數是被合併數組元素個數之和將a或b行轉成列

 

a = a.T print(a)

    [1 1 1]

上面的方式是無法將a進行行轉列的,原因是a是個一維數組,它根本就沒有列,正確的方式是:

c = a.reshape((3, 1)) print(c)

    [[1]     [1]     [1]]

重新定義形狀後,現在a是一個3行1列的矩陣,即一個二維數據

思考:a.reshape()是將a所指向的數組的形狀改變了嗎?再來查看a

    print(a)    [1 1 1]

實際上,a.reshape()只是創建了一個a的副本,然後將該副本的內存地址賦給了變量c,而a變量所指向的數組還是原來的對象

newaxis屬性

還有另外一組方式可以改變a的形狀,也是返回一個 ;axis表示“軸”的意思

# 在行上增加一個維度(增加一個軸) c = a[np.newaxis, :] print(c) print(c.shape) print('-'*15) # 在列上增加一個維度 c = a[:, np.newaxis] print(c) print(c.shape)

    [[1 1 1]]    (1, 3)    ---------------    [[1]     [1]     [1]]    (3, 1)

可以看出,返回的新對象的維度都已經發生了變化,在列方向上增加維度以後,將原先的一維數組變成了縱向的二維數組

_a = a[:, np.newaxis] _b = b[:, np.newaxis] c = np.hstack((_a, _b)) print(c)

    [[1 2]     [1 2]     [1 2]]

也可以將同一個對象進行合併

   

print(np.hstack((_a, _a, _b, _b)))

 

    [[1 1 2 2]     [1 1 2 2]     [1 1 2 2]]

concatenate()

 

也可以將數組進行合併,通過axis可以指定合併的方向

# 橫向合併 c = np.concatenate((_a, _a, _b, _b), axis=1) # 縱向合併 d = np.concatenate((_a,_b), axis=0) print(c) print('-'*10) print(d)

 

    [[1 1 2 2]     [1 1 2 2]     [1 1 2 2]]    ----------    [[1]     [1]     [1]     [2]     [2]

————————————————REF

鏈接:https://blog.csdn.net/shipeng1022/article/details/107069140

 

 

https://www.codenong.com/cs105209851/

http://c.biancheng.net/view/7209.html

http://www.zzvips.com/article/174390.html

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有